package com.hck.infrastructure.persistent.dao;

import com.hck.infrastructure.persistent.po.HealthCheckRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 健康檢查記錄表數據訪問接口
 */
@Mapper
public interface IHealthCheckRecordDao {
    /**
     * 插入健康檢查記錄
     */
    void insert(HealthCheckRecord healthCheckRecord);

    /**
     * 根據ID查詢健康檢查記錄
     */
    HealthCheckRecord selectById(Long id);

    /**
     * 根據用戶ID查詢健康檢查記錄
     */
    List<HealthCheckRecord> selectByUserId(Long userId);

    /**
     * 根據用戶ID和檢查類型查詢健康檢查記錄
     */
    List<HealthCheckRecord> selectByUserIdAndType(@Param("userId") Long userId, @Param("checkType") String checkType);

    /**
     * 根據用戶ID和檢查類型查詢最新的健康檢查記錄
     */
    HealthCheckRecord selectLatestByUserIdAndType(@Param("userId") Long userId, @Param("checkType") String checkType);

    /**
     * 根據日期範圍查詢健康檢查記錄
     */
    List<HealthCheckRecord> selectByDateRange(@Param("userId") Long userId, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 更新健康檢查記錄
     */
    void update(HealthCheckRecord healthCheckRecord);

    /**
     * 刪除健康檢查記錄
     */
    void deleteById(Long id);
} 